hhkb
모의해킹

호스트기반모의해킹_06_서비스 스캐닝

작성자 : Heehyeon Yoo|2025-11-18
# 모의해킹# 정보수집# Nmap# Banner Grabbing# NSE

1. 개요(Overview)

포트 스캐닝이 "문이 열려있는가?"를 확인하는 것이라면, 서비스 스캐닝은 "그 문 뒤에 누가(Who) 있고, 버전(Version)은 무엇인가?"를 식별하는 과정이다.

  • 포트 번호(예: 2222)만으로는 실제 서비스를 확신할 수 없다. (2222 포트에 SSH가 돌 수도, Web이 돌 수도 있다.)
  • 목표: 정확한 서비스 명(Service Name)버전 정보(Version Info)를 획득하여, 해당 버전에 존재하는 CVE(취약점)를 찾아내는 것.

2. 배너 그래빙(Banner Grabbing)

서비스에 연결했을 때 서버가 보내주는 초기 환영 메시지(Banner)를 수집하는 기법이다.

2.1 패시브 배너 그래빙(Passive Banner Grabbing)

  • 방식: 단순히 TCP 연결(3-Way Handshake)을 맺고 서버가 먼저 말을 걸 때까지 기다린다.
  • 동작:
    (Connect)
    Server: "220 (vsFTPd 3.0.3)"  <-- 이것이 배너
    
  • 특징: 서버가 자발적으로 정보를 노출하는 경우 유용하다. Nmap -sT 수행 시 자동으로 일부 확인 가능하다.

2.2 액티브 서비스 프로빙(Active Service Probing)

  • 문제: 보안 설정된 서버는 연결해도 아무 말 없이 침묵(Silence)한다.
  • 방식: Nmap이 다양한 프로브 패킷(Probe Packets)을 서버에 던져보고, 되돌아오는 응답 패턴(Response Pattern)을 분석해 서비스를 추측한다.
  • 도구: nmap -sV [IP]
    • Nmap은 약 16,000개 이상의 서비스 시그니처 데이터베이스(nmap-service-probes)를 보유하고 있어, 미지의 응답과 매칭하여 버전을 식별한다.

3. Nmap 스크립트 엔진(Nmap Scripting Engine, NSE)

Nmap의 기능을 확장하는 강력한 스크립트 도구. Lua 언어로 작성되어 있다.

  • 기본 스크립트 실행: nmap -sC [IP] (또는 --script=default)
    • 가장 안전하고 유용한 기본 스크립트 세트를 실행한다.
  • 예시: FTP 서비스 발견 시 ftp-anon 스크립트가 자동 실행되어 익명 로그인(Anonymous Login) 가능 여부를 즉시 확인해준다.
  • 경로: 리눅스 기준 /usr/share/nmap/scripts/에 저장되어 있다.

4. 수동 점검 및 클라이언트 활용(Manual Verification)

자동화 도구(Nmap)가 실패하거나 정밀 분석이 필요할 때 사용한다.

4.1 넷캣(Netcat, nc)

  • 용도: Raw TCP 연결을 통해 서버와 직접 대화하며 응답을 확인한다.
  • 방법:
    nc [IP] [PORT]
    (연결 후 HELP, HEAD / HTTP/1.0 등의 명령어 입력)
    
  • 분석: Wireshark를 함께 띄워놓고 주고받는 패킷 내용을 분석하면, 숨겨진 헤더나 에러 메시지에서 힌트를 얻을 수 있다.

4.2 전용 클라이언트(Native Clients)

  • 용도: Raw Packet이 아닌, 해당 프로토콜의 정규 클라이언트 프로그램을 사용하면 더 정확한 정보를 얻을 수 있다.
  • 예시:
    • FTP: ftp [IP] (터미널 FTP 클라이언트)
    • Web: curl -v [URL] 또는 웹 브라우저
    • SMB/Samba: enum4linux, crackmapexec

5. 실무에서는?

"Nmap이 알려주지 않으면 모른다"가 되어서는 안 된다.

  1. 자동화(Nmap): -sV, -sC로 전체적인 윤곽을 잡는다.
  2. 수동 검증(Manual): 중요 포트나 식별되지 않은 서비스는 nc나 전용 클라이언트로 직접 접속하여 "대화"를 시도해야 한다.
  3. 결과 정리: 수집된 서비스와 버전 정보는 에디터에 깔끔하게 정리해두어야 추후 취약점 검색(Searchsploit 등)에 활용할 수 있다.